package com.chenfan.mcn.model.dto;

import cn.hutool.core.util.ArrayUtil;
import com.chenfan.mcn.config.UserVoContextHolder;
import com.chenfan.mcn.model.IncomeContract;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.apache.commons.collections4.CollectionUtils;
import org.apache.commons.lang3.ObjectUtils;

import java.util.Date;
import java.util.List;

/**
 * @author tangwei
 * Date:     2021/1/21 10:36
 * Description: 收入合同列表搜索
 */
@SuppressWarnings("AlibabaPojoNoDefaultValue")
@EqualsAndHashCode(callSuper = true)
@Data
public class IncomeContractSearchDTO extends AbstractMcnPrivilegeDTO<IncomeContract> {

    private static final long serialVersionUID = 499111844780731958L;

    /**
     * 合同编号
     */
    private String contractCode;

    /**
     * 创建人名称
     */
    private String createName;

    /**
     * 数据所有人
     */
    private String ownerName;

    /**
     * 客户id
     */
    private String customerId;

    /**
     * 单据状态
     */
    private List<Integer> approvalStatus;

    /**
     * 审批状态：审批人userId
     */
    private List<Long> flowStatus;

    /**
     * 通过审批流 待审批 获取的id集合
     */
    private List<Long> srcIds;

    /**
     * 合同签订日期-开始
     */
    private Date signDateStart;

    /**
     * 合同签订日期-结束
     */
    private Date signDateEnd;

    /**
     * 创建时间-开始
     */
    private Date createDateStart;

    /**
     * 创建时间-结束
     */
    private Date createDateEnd;

    /**
     * 我司合同主体(数据字典)
     */
    private List<String> companyContractSubject;

    private List<Long> processIds;

    /**
     * 合同类型
     */
    private List<Integer> contractType;

    /**
     * 是否归档（1-否，2-是）
     */
    private Integer isFile;

    /**
     * 归档编号
     */
    private String archivingCode;

    /**
     * 归档状态
     */
    private List<Integer> archivingStatusList;

    /**
     * 回款状态：0未回款、1部分回款、2已回款
     */
    private List<Integer> payBackStatus;

    private Long pageNum = 1L;

    private Long pageSize = 10L;

    /**
     * 临时表编号
     */
    private String temporaryCode;

    /**
     * 商务提成id
     */
    private Long businessId;

    /**
     * 季度编号
     */
    private String quarterCode;

    /**
     * 当前搜索人ID
     */
    private Long searcherId;

    /**
     * 标签
     */
    private List<String> tagList;

    /**
     * 品牌编码
     */
    private String cooperateBrand;

    /**
     * 线下佣金-结算状态：0待结算、1结算中、2待回款、3部分回款、4已回款
     */
    private List<Integer> offlineCommissionSettleStatus;

    /**
     * 红人平台ID集合
     */
    private List<Long> starPlatformIds;

    /**
     * 是否有参与保比的广告收入：0否1是
     */
    private Integer roiAdvAmtEquity;

    /**
     * 是否有不参与保比的广告收入：0否1是
     */
    private Integer noroiAdvAmtEquity;

    /**
     * 直播提成结算状态：0未结算 2已结算
     */
    private Integer liveCommissionSettleStatus;

    /**
     * 钉钉合同审批编号
     */
    private String dingdingContractCode;

    @Override
    public void extendDataPrivilege(StringBuilder sb, String[] dataScops) {
        sb.append(" AND (");
        sb.append("(1= 1 ");
        super.extendDataPrivilege(sb, dataScops);
        sb.append(")");
        if (CollectionUtils.isNotEmpty(this.getUserIds())) {
            sb.append(" OR " + this.getAlias()).append("performance_sharer_id IN (").append(ArrayUtil.join(this.getUserIds().toArray(), ",")).append(")");
        } else if (UserVoContextHolder.getUserId() != null) {
            sb.append(" OR " + this.getAlias()).append("performance_sharer_id = ").append(ObjectUtils.defaultIfNull(UserVoContextHolder.getUserId(), -1L));
        }
        sb.append(")");
    }
}